let express=require('express')
let Router=express.Router()
// 导出Router
module.exports=Router
let query=require('./db')
// 导入multer multer 库来处理文件上传和存储
let multer = require('multer')
// 导入path
let path = require('path')
// 设置配置 
// 接收一个对象作为参数，该对象包含用于指定文件保存位置和文件命名的方法
let storage = multer.diskStorage({
    // 指定了文件保存的路径
    destination: path.join(__dirname, '../static/images'),
    // 用于生成文件名的回调函数，
    filename: (req, file, cb) => {
        // 获取上传文件的扩展名
        let ext = path.extname(file.originalname)
        // 这行代码将生成的文件名作为回调函数的第二个参数传递给 cb，完成文件名的设定。
        cb(null, file.fieldname + '-' + Date.now() + ext)
    }
})
// 使用配置
// 创建一个 multer 中间件实例，并将配置选项 storage 传入其中。这样创建的 upload 对象可以用于处理文件上传操作
let upload = multer({
    storage
})
// 获取文章类型
Router.get('/wenZangType',async(req,res)=>{
   try {
    let data=await query(`select *  from type `)
    res.send({
        code:200,
        msg:'查询成功',
        data
    })
   } catch (error) {
    res.send({
        code:400,
        msg:'数据库操作错误',
    })
   }  
})
// 添加文章
Router.put('/addArticle',upload.single('article_view'),async(req,res)=>{
    let file = req.file
    let {
       article_title,
       article_content,
       type_id,
       article_time,
       article_view,
       user_id,
       article_status
    } = req.body
    if (file) {
        let imgurl = `http://localhost:9091/images/` + file.filename;
        sql = `INSERT INTO wenzhang VALUES (${null},'${article_title}','${article_content}',${type_id},'${article_time}','${imgurl}',${user_id},${article_status})`;
    } else {
        sql = `INSERT INTO wenzhang VALUES (${null},'${article_title}','${article_content}',${type_id},'${article_time}',${null},${user_id},${article_status})`;
    }
    try {
        await query(sql);
        res.send({
            code: 200,
            msg:'添加成功'
        })
    } catch (error) {
        res.send({
            code: 400,
            msg:error
        })
    }
   
})
// 获取对应类型的文章
Router.get('/statusType/:status',async(req,res)=>{
    let {type}=req.session.info
    let {status}=req.params
    if(type==2){
        try {
            let data=await query(`select * from wenZhang where article_status=${status}`)
            res.send({
                code:200,
                msg:'查询成功',
                data
            })
        } catch (error) {
            res.send({
                code:400,
                msg:'数据库操作错误'
            })
        }
    }else{
        res.send({
            code:400,
            msg:'非管理员，无权限'
        })
    } 
})
// 点击审核通过的接口
Router.post('/ok',async(req,res)=>{
    let {article_id,user_id}=req.body
    try {
        let data=await query(`update wenZhang set article_status=${1} where article_id=${article_id} and user_id=${user_id}`)
        res.send({
            code:200,
            msg:'修改成功'
        })
    } catch (error) {
        res.send({
            code:400,
            msg:'数据库操作错误'
        })
    }
})
// 点击驳回的接口
Router.post('/err',async(req,res)=>{
    let {article_id,user_id}=req.body
    try {
        let data=await query(`update wenZhang set article_status=${2} where article_id=${article_id} and user_id=${user_id}`)
        res.send({
            code:200,
            msg:'修改成功'
        })
    } catch (error) {
        res.send({
            code:400,
            msg:'数据库操作错误'
        })
    }
})

// 获取所有已经审核完的最新的文章
Router.get('/getAllwz',async(req,res)=>{
    let {page,limit}=req.query
    page=page*1||1
    limit=limit*1||3
    let index=(page-1)*limit
    try {
        let data=await query(`SELECT * FROM wenZhang WHERE article_status = 1 ORDER BY article_time DESC LIMIT ${index},${limit};`)
       
        res.send({
            code:200,
            msg:'查询成功',
            data,
            next_page:page+1
        })
    } catch (error) {
        res.send({
            code:400,
            msg:'数据库操作错误',
        })
    }
})
// 获取不同类型的已经审核完的最新的文章
// 参数有limit page article_type
Router.post('/getOtherWz',async(req,res)=>{
    let {page,limit,article_type}=req.body
    page=page*1||1
    limit=limit*1||3
    article_type=article_type*1
    let index=(page-1)*limit
    let sql=''
    if(article_type==1){
        sql=`SELECT * FROM wenZhang WHERE article_status = 1 ORDER BY article_time DESC LIMIT ${index},${limit};`
    }else{
        sql=`SELECT * FROM wenZhang WHERE article_status = 1 and type_id=${article_type} ORDER BY article_time DESC LIMIT ${index},${limit};`
    }
    try {
        
        let data=await query(sql)
        res.send({
            code:200,
            msg:'查询成功',
            data,
            next_page:page+1
        })
    } catch (error) {
        res.send({
            code:400,
            msg:'数据库操作错误',
        })
    }
})
// 获取详情
Router.get('/getDetail/:article_id',async(req,res)=>{
    let {article_id}=req.params
    let n=article_id*1
    try {
        let data=await query(`select * from wenZhang where article_id=${n}`)
        res.send({
            code:200,
            msg:'查询成功',
            data
        })
    } catch (error) {
        res.send({
            code:200,
            msg:'数据库操作错误'
        })
    }
})
// 获取不同类型的文章(限制)
Router.post('/typeWz',async(req,res)=>{
    let {page,limit,article_type}=req.body
    page=page*1||1
    limit=limit*1||8
    article_type=article_type*1
    let index=(page-1)*limit
    try {
       
        
        let data=await query(`SELECT * FROM wenZhang WHERE type_id =${article_type}  ORDER BY article_time DESC LIMIT ${index},${limit};`)
        let data2=await query(`SELECT * FROM wenZhang WHERE type_id =${article_type} `)
        res.send({
            code:200,
            msg:'查询成功',
            data,
            data2,
            next_page:page+1
        })
    } catch (error) {
        res.send({
            code:400,
            msg:'数据库操作错误',
        })
    }
})
// 获取不同类型的文章（全部）